/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package modelo;

import gui.PanelClientes;
import java.util.LinkedList;
import java.util.List;
import org.hibernate.HibernateException;
import persistencia.AtiendeDAO;
import persistencia.ClientesDAO;
import persistencia.ColumnNames;
import pojos.Cliente;
import pojos.Empleados;
import pojos.Paciente;

/**
 *
 * @author cvenegas
 */
public class GestorClientes {

    private Cliente cliente;
    private ClientesDAO clienteDAO;
    private PanelClientes panel;
    private TableModel_Clientes tableModel_Clientes;
    public List <Cliente> listaClientes;

    public GestorClientes(PanelClientes panel) {
        this.panel = panel;
        listaClientes = new LinkedList();
        tableModel_Clientes = new TableModel_Clientes(ColumnNames.getColumnName("Cliente"));
        panel.jTableClientes.setModel(tableModel_Clientes);
    }

    public GestorClientes() {
    }
    
    public void addCliente(Empleados empleado, String nombre, String dni, String direccion) {
        cliente = new Cliente(empleado, nombre, dni, direccion);
        new ClientesDAO().addCliente(cliente);
    }
    
    public Cliente buscarCliente(String cif){
        clienteDAO = new ClientesDAO();
        return clienteDAO.getCliente(cif);
    }
    
    public Cliente buscarCliente(int row){
        
        return listaClientes.get(row);
    }
    
    
    public void setlistaClientes(){
        clienteDAO = new ClientesDAO();
        listaClientes = clienteDAO.getClientes();

    }
    
    public void setlistaClientes(Cliente cliente){
        listaClientes = new LinkedList();
        listaClientes.add(cliente);
    }
    
    
    public void updateTableModel(){
        //ACTUALIZAMOS LAS LISTAS DE LOS TABLE MODELS
        tableModel_Clientes.setListaClientes(listaClientes);
        
        //ACTUALIZAMOS EL CONTENIDO DE LOS JTABLES
        tableModel_Clientes.fireTableDataChanged();
    }
    
    public void clearList(){
        if (listaClientes.size() > 0){
            listaClientes.clear();
            updateTableModel();
        }
    }
    
    
    public void eliminar(int row){
        clienteDAO = new ClientesDAO();
        cliente = listaClientes.get(row);

        try{
            clienteDAO.eliminaCliente(cliente);
            updateTableModel();
        }catch (HibernateException he){
            throw he;
        }
    }

    public void setCliente(Cliente cliente) {
        clienteDAO = new ClientesDAO();
        try{
            clienteDAO.editarCliente(cliente);
            
        }catch (HibernateException he){
            throw he;
        }
    }

    
    
}
